/*
 * This file is part of JFlowMap.
 *
 * Copyright 2009 Ilya Boyandin
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package fons.navigator.util.piccolo;

import edu.umd.cs.piccolo.PCamera;
import edu.umd.cs.piccolo.event.PInputEvent;
import edu.umd.cs.piccolo.event.PPanEventHandler;

public class PanHandler extends PPanEventHandler {
	private boolean panAnyway = true;

	public PanHandler () { }
	public PanHandler (boolean panAnyway) {
		this.panAnyway = panAnyway;
	}

	protected void drag(PInputEvent e) {
		if (panAnyway || PCamera.class.equals(e.getPickedNode().getClass()))
			if (!e.isControlDown() && !e.isAltDown() && !e.isMetaDown()) {
				super.drag(e);
			}
	}

	protected void dragActivityFirstStep(PInputEvent aEvent) {
		if (panAnyway || PCamera.class.equals(aEvent.getPickedNode().getClass()))
			if (!aEvent.isControlDown() && !aEvent.isAltDown() && !aEvent.isMetaDown()) {
				super.dragActivityFirstStep(aEvent);
			}
	}

	protected void dragActivityStep(PInputEvent aEvent) {
		if (panAnyway || PCamera.class.equals(aEvent.getPickedNode().getClass()))
			if (!aEvent.isControlDown() && !aEvent.isAltDown() && !aEvent.isMetaDown()) {
				super.dragActivityStep(aEvent);
			}
	}
}
